Contract物件,可說是Shioaji API的核心,因為它是每個金融商品的基本資料,不管你是要取得歷史資料或是當下的報價,都要先指定Contract,讓Shioaji API知道你是要查詢哪一個金融商品的資料
而每一個Contract都可以透過code或是symbol來取得,取得程式語法有三種,三種取得的內容都是相同的,可以依個人喜好選擇其中一種方式
股票Contract取得的方式:
api.Contracts.Stocks.TSE.TSE2890 #使用SYMBOL
api.Contracts.Stocks.TSE['2890'] #使用CODE
api.Contracts.Stocks['2890'] #使用CODE
股票Contract物件屬性說明
屬性 | 屬性值 | 說明 |
---|---|---|
exchange | <Exchange.TSE: 'TSE'> | 掛牌交易所(TSE:上市, OTC:上櫃, OES:興櫃) |
code | '2890' | 股票代碼 |
symbol | 'TSE2890' | |
name | '永豐金' | 股票名稱 |
category | '17' | 股票類型 |
unit | 1000 | 每單位股數 |
limit_up | 15.5 | 當日漲停價 |
limit_down | 12.7 | 當日跌停價 |
reference | 14.1 | 參考價格,即前一個交易日的收盤價 |
update_date | '2021/09/17' | 更新日期 |
day_trade | <DayTrade.Yes: 'Yes'> | 買賣現沖(OnlyBuy:先買現沖, Yes:買賣現沖, No:無現股當沖) |
margin_trading_balance | 0 | 融資限額 |
short_selling_balance | 0 | 融券限額 |
這裡要特別說明,融資限額跟融券限額數量,為前一個交易日收盤後結轉的數量,如果你在盤中取得資料,不會是當下可以下單的數量 |
期貨Contract取得的方式
api.Contracts.Futures.TXF.TXF202110 #使用SYMBOL
api.Contracts.Futures.TXF['TXFJ1'] #使用CODE
api.Contracts.Futures['TXFJ1'] #使用CODE
期貨Contract物件屬性說明
屬性 | 屬性值 | 說明 |
---|---|---|
code | 'TXFJ1' | 期貨代碼 |
symbol | 'TXF202110' | |
name | '臺股期貨' | 期貨名稱 |
category | 'TXF' | 期貨類型 |
unit | 1 | 每單位數量 |
limit_up | 19023.0 | 當日漲停價 |
limit_down | 15565.0 | 當日跌停價 |
reference | 17294.0 | 參考價格,即前一個交易日的收盤價 |
update_date | '2021/09/18' | 更新日期 |
delivery_month | '202110' | 結算月份 |
delivery_date | '2021/10/20' | 結算日期 |
underlying_kind | I | 標的類型(I:指數, S:個股) |
選擇權Contract取得的方式
api.Contracts.Options.TXO.TXO202110017500C #使用SYMBOL
api.Contracts.Options.TXO['TXO17500J1'] #使用CODE
api.Contracts.Options['TXO17500J1'] #使用CODE
選擇權Contract物件屬性說明
屬性 | 屬性值 | 說明 |
---|---|---|
code | 'TXO17500J1' | |
symbol | 'TXO202110017500C' | |
name | '臺指選擇權' | 選擇權名稱 |
category | 'TXO' | 選擇權分類 |
unit | 1 | 每單位數量 |
delivery_month | '202110' | 結算月份 |
delivery_date | '2021/10/20' | 結算日期 |
strike_price | 17500.0 | 選擇權履約價 |
option_right | <OptionRight.Call: 'C' | 選擇權類型(C:買權Call, P:賣權Put) |
underlying_kind | I | 標的類型 (I:指數, S:個股) |
limit_up | 1940.0 | 漲停價 |
limit_down | 0.1 | 跌停價 |
reference | 215.0 | 參考價格 |
update_date | '2021/09/18' | 最後更新日期 |
指數Contract取得的方式
api.Contracts.Indexs.TSE.TSE001 #使用SYMBOL
api.Contracts.Indexs.TSE['001'] #使用CODE
api.Contracts.Indexs['001'] #使用CODE
指數Contract物件屬性說明
屬性 | 屬性值 | 說明 |
---|---|---|
exchange | <Exchange.TSE: 'TSE'> | 交易所 |
code | '001' | 指數代號 |
symbol | 'TSE001' | |
name | '加權指數' | 指數名稱 |
在Day 01中,有介紹使用pipenv來建立Shioaji API專用的虛擬環境
並且說明在console中要先啟動虛擬環境後才可正常執行程式
若你直接按VS Code右上的角的執行按鈕,應該會看到ModuleNotFoundError: No module named 'shioaji'
這類的錯誤訊息,那是因為VS Code所使用的Python Interpreter不是虛擬環境中的那個
如果要讓VS Code執行python程式時,自動啟動虛擬環境,首先點左下角的「Python 3.7.9 64-Bit」
正常情況下,VS Code會偵測到虛擬環境,並會顯示Recommand,請直接選擇這一項
(若沒有偵測到,請確定所建立的python檔案是否在當初建立的開發環境資料夾底下)
選擇完畢後,可以看到左下角的Python 3.7.9,後面多了「('shioaji-xxxxxxxx':pipenv)」,這表示VS Code已經知道接下來我們要執行python程式時,是要使用這個虛擬環境中的Python Interpreter
接著,按下右上的執行按鈕,就可以成功執行程式